#pragma once

#include "GameplayTagContainer.h"
#include "WarriorStructTypes.generated.h"

class UWarriorHeroLinkedAnimLayer;
class UWarriorGameplayAbility;
class UInputMappingContext;

USTRUCT(BlueprintType)
struct FWarriorHeroAbilitySet {
  GENERATED_BODY()
  UPROPERTY(EditDefaultsOnly, BlueprintReadOnly,
            meta = (Categories = "InputTag"))
  FGameplayTag InputTag;
  UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
  TSubclassOf<UWarriorGameplayAbility> AbilityToGrant;
  bool IsValid() const;
};

USTRUCT(BlueprintType)
struct FWarriorHeroWeaponData {
  GENERATED_BODY()
  UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
  TSubclassOf<UWarriorHeroLinkedAnimLayer> WeaponAnimLayerToLink;

  
	UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
  UInputMappingContext* WeaponInputMappingContext;
  UPROPERTY(EditDefaultsOnly, BlueprintReadOnly,
            meta = (TitleProperty = "InputTag"))
  TArray<FWarriorHeroAbilitySet> DefaultWeaponAbilities;
};
